package amtf

import (
	"encoding/json"
	"fmt"
	"server/global"
	"server/model/common/response"
	"server/utils"

	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
)

func A成插件api(c *gin.Context) {
	decoder := json.NewDecoder(c.Request.Body)
	var data []any
	decoder.Decode(&data)
	bytes, err := json.Marshal(data)
	if err != nil {
		response.FailWithMessage(err.Error(), c)
		return
	}
	models := []*S插件{}
	json.Unmarshal(bytes, &models)
	A存json(data, models)
	err = A成插件s7(models)
	if err != nil {
		msg := fmt.Sprintf("生成插件 %s 失败!", err)
		global.A_LOG.Error(msg, zap.Error(err))
		response.FailWithMessage(msg+err.Error(), c)
		return
	}
	response.OkWithData(models, c)
}

func A成插件api_单个废(c *gin.Context) {
	decoder := json.NewDecoder(c.Request.Body)
	var data any
	decoder.Decode(&data)
	bytes, err := json.Marshal(data)
	if err != nil {
		response.FailWithMessage(err.Error(), c)
		return
	}

	model := &S插件{}
	json.Unmarshal(bytes, &model)
	if model.A名称 == "开发" {
		A存json_单个废(bytes)
	}

	userID := utils.GetUserID(c)
	记录创建用户(&userID, model)
	记录id否(c, model)
	err = A成插件s7_单个(model)
	if err != nil {
		msg := fmt.Sprintf("生成插件 %s 失败!", model.A名称)
		global.A_LOG.Error(msg, zap.Error(err))
		response.FailWithMessage(msg+err.Error(), c)
		return
	}
	response.OkWithData(model, c)
}

func A查插件api_从数据库(c *gin.Context) {
	插组件集 := A成插件给前端_从数据库()
	// 插件的结构体 := A插件集["开发"].A组件s[0]
	// 插件的结构体.Aservice.A查(S列表req{})

	// 检查是否可以正常编码json👇
	_, err := json.Marshal(插组件集)
	if err != nil {
		fmt.Println("插组件集 marshaling JSON 出错:", err)
		// c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to marshal JSON"})
		response.FailWithMessage(err.Error(), c)
		return
	}
	response.OkWithData(插组件集, c)
}

func A查插件api_自供参数(插件名s []string) gin.HandlerFunc {
	return func(c *gin.Context) {
		插组件集 := A成插件给前端(插件名s)

		// 检查是否可以正常编码json👇
		_, err := json.Marshal(插组件集)
		if err != nil {
			fmt.Println("插组件集 marshaling JSON 出错:", err)
			// c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to marshal JSON"})
			response.FailWithMessage(err.Error(), c)
			return
		}
		response.OkWithData(插组件集, c)
	}
}
